package TankGame;

// 该类用于表示游戏中的障碍物
// 包含了障碍物的位置、尺寸和耐久度等属性，以及绘制、碰撞检测等方法。
// 主要运用了 Java 的面向对象编程和图形绘制的知识。

import java.awt.*;
import java.io.Serializable;

// Obstacle类表示游戏中的障碍物，具有位置、尺寸和耐久度等属性，以及相应的操作方法
public class Obstacle implements Serializable {
    int x, y; // 障碍物在游戏面板中的坐标
    int width, height; // 障碍物的宽度和高度
    int durability; // 障碍物的耐久度，表示能承受的撞击次数

    // 构造函数，用于初始化障碍物的属性
    public Obstacle(int startX, int startY, int width, int height, int durability) {
        this.x = startX;
        this.y = startY;
        this.width = width;
        this.height = height;
        this.durability = durability;
    }

    // 当障碍物被击中时调用此方法，减少其耐久度
    public void hit() {
        durability--;
    }

    // 判断障碍物是否被摧毁，即耐久度是否小于等于0
    public boolean isDestroyed() {
        return durability <= 0;
    }

    // 在给定的Graphics2D对象上绘制障碍物，以灰色长方形表示
    public void draw(Graphics2D g) {
        g.setColor(Color.GRAY);
        g.fillRect(x, y, width, height);
    }

    // 获取障碍物的矩形边界，用于碰撞检测
    public Rectangle getBounds() {
        return new Rectangle(x, y, width, height);
    }
}
